// pages/profile/index.ts
Page({

  /**
   * 页面的初始数据
   */
  data: {
    userInfo: {
      nickName: '',
      avatar: ''
    }
  },
  onLoad() {
    this.getUserInfo()
  },
  // 获取用户信息的接口
  async getUserInfo() {
    // 请求用户信息
    const { code, data: userInfo } = await wx.http.get('/userInfo')
    if (code !== 10000) return wx.utils.toast()
    // 设置数据，更新渲染
    this.setData({
      userInfo
    })
  },
  // 监听 blur 事件，获取昵称内容
  async getUserNickName(ev) {
    console.log(ev.detail.value)
    // 将用户昵称存到数据中，为了将来使用
    this.setData({ 'userInfo.nickName': ev.detail.value })
    // 请求接口，将用户的昵称，保存到后端
    const { code } = await wx.http.put('/userInfo', {
      nickName: this.data.userInfo.nickName
    })
    // console.log(data, '保存昵称返回的响应');
    // 根据返回的请求的状态码，判断是否修改数据，渲染页面
    if (code !== 10000) return wx.utils.toast()
  },
  // 监听 chooseavatar 事件，获取头像地址
  getUserAvatar(ev) {
    // ev.detail.avatarUrl 是临时地址，只能在小程序中使用
    // console.log(ev.detail.avatarUrl)
    this.setData({
      'userInfo.avatar': ev.detail.avatarUrl
    }),
      // 调用接口，上传文件
      wx.uploadFile({
        // 因为使用的不是封装的http的中的基地址，所以不能省略基地址
        // 开发者服务器地址
        url: wx.http.baseURL + '/upload',
        // 要上传文件资源的路径（本地路径）
        filePath: ev.detail.avatarUrl,
        // 文件对应的key，开发者在服务端可以通过。
        // 这个key获取文件的二进制内容
        name: 'file',
        header: {
          Authorization: getApp().token
        },
        // http 请求中其他额外的参数
        formData: {
          type: 'avatar'
        },
        // 调取的回调函数
        success: (res) => {
          console.log(res, '上传头像回调返回的信息');
          // 将res.data中的JSON数据，转化为原对象
          const data = JSON.parse(res.data)
          console.log(data);
          // 如果后端请求的状态码，不成功，则终止
          if (data.code !== 10000) return wx.utils.toast()
        }
      })
  }
})